/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.server.game;

import com.core.utils.DateUtil;
import com.core.utils.Utils;
import com.server.database.Item;
import com.server.database.ItemInfo;
import com.server.database.UserMessage;
import com.server.main.ClientManager;

/**
 *
 * @author Hung
 */
public class Shop {

    private ClientManager client;
    private GameManager gameManager;
    private ItemInfo itemInfo;

    public Shop(ClientManager client, GameManager gameManager) {
        this.client = client;
        this.gameManager = gameManager;
    }

    public void processMessage(String request) {
        String[] part = Utils.split(request, '|');
        if (part[0].startsWith("BUY")) {
            int itemId = Integer.parseInt(part[1]);
            if (client.clientVersionCode <= 1) {
                gameManager.sendMessage(client, "Thông báo", client.getUserName(), UserMessage.MESSAGE_NORMAL, "Tính năng shop trong game mới được nâng cấp và không còn hỗ trợ phiên bản cũ. Bạn hãy cập nhật phiên bản mới nhất để có thể sử dụng tính năng này.");
            } else {
                int numberItem = Integer.parseInt(part[2]);
                long moneyOfPlayer = client.getUserMoney();
                int totalMoney = numberItem * client.getItemInfo().getItemPrice(itemId);

                if (itemInfo == null) {
                    itemInfo = client.getItemInfo();
                }

                if (totalMoney <= moneyOfPlayer) {
                    // Giao dich thanh cong
                    client.updateMoneyDelta(-totalMoney);
                    for (int i = 0; i < numberItem; i++) {
                        Item item = new Item(itemId, itemInfo.getItemPrice(itemId), itemInfo.getItemLuckPercent(itemId), itemInfo.getItemTimeLimit(itemId), DateUtil.newTimestamp());
                        client.addItem(item);
                    }
                    client.sendMessage("BUY|1");
                    client.sendMessage("CM|-" + totalMoney);
                } else {
                    // Giao dich that bai
                    client.sendMessage("BUY|0");
                }
            }
        }
    }
}
